# -*- coding: utf-8 -*-

from fontTools.ttLib import TTFont
import os
import re
import requests


def convert_Data():
#     woff_string = '''
# 1234567890店中美家馆
# 小车大市公酒行国品发电金心业商司
# 超生装园场食有新限天面工服海华水
# 房饰城乐汽香部利子老艺花专东肉菜
# 学福饭人百餐茶务通味所山区门药银
# 农龙停尚安广鑫一容动南具源兴鲜记
# 时机烤文康信果阳理锅宝达地儿衣特
# 产西批坊州牛佳化五米修爱北养卖建
# 材三会鸡室红站德王光名丽油院堂烧
# 江社合星货型村自科快便日民营和活
# 童明器烟育宾精屋经居庄石顺林尔县
# 手厅销用好客火雅盛体旅之鞋辣作粉
# 包楼校鱼平彩上吧保永万物教吃设医
# 正造丰健点汤网庆技斯洗料配汇木缘
# 加麻联卫川泰色世方寓风幼羊烫来高
# 厂兰阿贝皮全女拉成云维贸道术运都
# 口博河瑞宏京际路祥青镇厨培力惠连
# 马鸿钢训影甲助窗布富牌头四多妆吉
# 苑沙恒隆春干饼氏里二管诚制售嘉长
# 轩杂副清计黄讯太鸭号街交与叉附近
# 层旁对巷栋环省桥湖段乡厦府铺内侧
# 元购前幢滨处向座下臬凤港开关景泉
# 塘放昌线湾政步宁解白田町溪十八古
# 双胜本单同九迎第台玉锦底后七斜期
# 武岭松角纪朝峰六振珠局岗洲横边济
# 井办汉代临弄团外塔杨铁浦字年岛陵
# 原梅进荣友虹央桂沿事津凯莲丁秀柳
# 集紫旗张谷的是不了很还个也这我就
# 在以可到错没去过感次要比觉看得说
# 常真们但最喜哈么别位能较境非为欢
# 然他挺着价那意种想出员两推做排实
# 分间甜度起满给热完格荐喝等其再几
# 只现朋候样直而买于般豆量选奶打每
# 评少算又因情找些份置适什蛋师气你
# 姐棒试总定啊足级整带虾如态且尝主
# 话强当更板知己无酸让入啦式笑赞片
# 酱差像提队走嫩才刚午接重串回晚微
# 周值费性桌拍跟块调糕'''

    # woffs = [i for i in woff_string if i != '\n' and i != ' ']
    # con = woffs[woffs]
    print("=========加载woff===========")
    baseFonts = TTFont(os.path.abspath(os.path.dirname(__file__)) + '/fonts/basefonts.woff')  # shopNum
    onlineFonts = TTFont(os.path.abspath(os.path.dirname(__file__)) + '/fonts/shopNum.woff')  # shopNum
    addressFonts = TTFont(os.path.abspath(os.path.dirname(__file__)) + '/fonts/tagName.woff')  # tagName
    addressFonts1 = TTFont(os.path.abspath(os.path.dirname(__file__)) + '/fonts/address.woff')  # address
    num2 = TTFont(os.path.abspath(os.path.dirname(__file__)) + '/fonts/96e57842.woff')  # num 2级页面数字
    # review = TTFont(os.path.abspath(os.path.dirname(__file__)) + '/fonts/f8170d6a.woff')  # review
    dishname = TTFont(os.path.abspath(os.path.dirname(__file__)) + '/fonts/1b2879f3.woff')  # dishname 推荐菜
    # num2.saveXML('3526468f.xml')
    # baseFonts.saveXML('baseFonts.xml')
    # onlineFonts.saveXML('onlineFonts.xml')
    uni_list = onlineFonts.getGlyphNames()[1:-1]  # 只有中间的部分是数字
    uni_list_tag = addressFonts.getGlyphNames()[1:-1]  # 只有中间的部分是数字
    uni_list_address1 = addressFonts1.getGlyphNames()[1:-1] # 只有中间的部分是数字
    uni_list_num = num2.getGlyphNames()[1:-1]  # 只有中间的部分是数字
    # uni_list_review = review.getGlyphNames()[1:-1]  # 只有中间的部分是数字
    uni_list_dishname = dishname.getGlyphNames()[1:-1]  # 只有中间的部分是数字
    base_nums = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '店', '中', '美', '家', '馆', '小', '车', '大',
                 '市', '公', '酒', '行', '国', '品', '发', '电', '金', '心', '业', '商', '司', '超', '生', '装', '园',
                 '场', '食', '有', '新', '限', '天', '面', '工', '服', '海', '华', '水', '房', '饰', '城', '乐', '汽',
                 '香', '部', '利', '子', '老', '艺', '花', '专', '东', '肉', '菜', '学', '福', '饭', '人', '百', '餐',
                 '茶', '务', '通', '味', '所', '山', '区', '门', '药', '银', '农', '龙', '停', '尚', '安', '广', '鑫',
                 '一', '容', '动', '南', '具', '源', '兴', '鲜', '记', '时', '机', '烤', '文', '康', '信', '果', '阳',
                 '理', '锅', '宝', '达', '地', '儿', '衣', '特', '产', '西', '批', '坊', '州', '牛', '佳', '化', '五',
                 '米', '修', '爱', '北', '养', '卖', '建', '材', '三', '会', '鸡', '室', '红', '站', '德', '王', '光',
                 '名', '丽', '油', '院', '堂', '烧', '江', '社', '合', '星', '货', '型', '村', '自', '科', '快', '便',
                 '日', '民', '营', '和', '活', '童', '明', '器', '烟', '育', '宾', '精', '屋', '经', '居', '庄', '石',
                 '顺', '林', '尔', '县', '手', '厅', '销', '用', '好', '客', '火', '雅', '盛', '体', '旅', '之', '鞋',
                 '辣', '作', '粉', '包', '楼', '校', '鱼', '平', '彩', '上', '吧', '保', '永', '万', '物', '教', '吃',
                 '设', '医', '正', '造', '丰', '健', '点', '汤', '网', '庆', '技', '斯', '洗', '料', '配', '汇', '木',
                 '缘', '加', '麻', '联', '卫', '川', '泰', '色', '世', '方', '寓', '风', '幼', '羊', '烫', '来', '高',
                 '厂', '兰', '阿', '贝', '皮', '全', '女', '拉', '成', '云', '维', '贸', '道', '术', '运', '都', '口',
                 '博', '河', '瑞', '宏', '京', '际', '路', '祥', '青', '镇', '厨', '培', '力', '惠', '连', '马', '鸿',
                 '钢', '训', '影', '甲', '助', '窗', '布', '富', '牌', '头', '四', '多', '妆', '吉', '苑', '沙', '恒',
                 '隆', '春', '干', '饼', '氏', '里', '二', '管', '诚', '制', '售', '嘉', '长', '轩', '杂', '副', '清',
                 '计', '黄', '讯', '太', '鸭', '号', '街', '交', '与', '叉', '附', '近', '层', '旁', '对', '巷', '栋',
                 '环', '省', '桥', '湖', '段', '乡', '厦', '府', '铺', '内', '侧', '元', '购', '前', '幢', '滨', '处',
                 '向', '座', '下', '県', '凤', '港', '开', '关', '景', '泉', '塘', '放', '昌', '线', '湾', '政', '步',
                 '宁', '解', '白', '田', '町', '溪', '十', '八', '古', '双', '胜', '本', '单', '同', '九', '迎', '第',
                 '台', '玉', '锦', '底', '后', '七', '斜', '期', '武', '岭', '松', '角', '纪', '朝', '峰', '六', '振',
                 '珠', '局', '岗', '洲', '横', '边', '济', '井', '办', '汗', '代', '临', '弄', '团', '外', '塔', '杨',
                 '铁', '浦', '字', '年', '岛', '陵', '原', '梅', '进', '荣', '友', '虹', '央', '桂', '沿', '事', '津',
                 '凯', '莲', '丁', '秀', '柳', '集', '紫', '旗', '张', '谷', '的', '是', '不', '了', '很', '还', '个',
                 '也', '这', '我', '就', '在', '以', '可', '到', '错', '没', '去', '过', '感', '次', '要', '比', '觉',
                 '看', '得', '说', '常', '真', '们', '但', '最', '喜', '哈', '么', '别', '位', '能', '较', '境', '非',
                 '为', '欢', '然', '他', '挺', '着', '价', '那', '意', '种', '想', '出', '员', '两', '推', '做', '排',
                 '实', '分', '间', '甜', '度', '起', '满', '给', '热', '完', '格', '荐', '喝', '等', '其', '再', '几',
                 '只', '现', '朋', '候', '样', '直', '而', '买', '于', '般', '豆', '量', '选', '奶', '打', '每', '评',
                 '少', '算', '又', '因', '情', '找', '些', '份', '置', '适', '什', '蛋', '师', '气', '你', '姐', '棒',
                 '试', '总', '定', '啊', '足', '级', '整', '带', '虾', '如', '态', '且', '尝', '主', '话', '强', '当',
                 '更', '板', '知', '己', '无', '酸', '让', '入', '啦', '式', '笑', '赞', '片', '酱', '差', '像', '提',
                 '队', '走', '嫩', '才', '刚', '午', '接', '重', '串', '回', '晚', '微', '周', '值', '费', '性', '桌',
                 '拍', '跟', '块', '调', '糕'
                 ]
    base_fonts = baseFonts.getGlyphOrder()[2:]  # 获取本地Unicode编码unif6e0


    showNum_list = {}
    tagName_list = {}
    address_list = {}
    num1_list = {}
    review_list = {}
    dishname_list = {}
    # 解析字体库
    # for i in range(10):
    #     onlineGlyph = onlineFonts['glyf'][uni_list[i]]  # 返回的是unicode对应信息的对象
    # for j in range(10):
    #     baseGlyph = baseFonts['glyf'][base_fonts[j]]
    #     if onlineGlyph == baseGlyph:
    #         temp["&#x" + uni_list[i][3:].lower() + ';'] = base_nums[j]
    print("========创建编码字典ing========")
    # 解析shopNum
    for i in range(len(uni_list)):
        onlineGlyph = onlineFonts['glyf'][uni_list[i]]  # 返回的是unicode对应信息的对象
        for j in range(len(base_fonts)):
            baseGlyph = baseFonts['glyf'][base_fonts[j]]
            if onlineGlyph == baseGlyph:
                showNum_list["&#x" + uni_list[i][3:].lower() + ';'] = base_nums[j]
    # 解析tagName
    for i in range(len(uni_list_tag)):
        onlineGlyph1 = addressFonts['glyf'][uni_list_tag[i]]  # 返回的是unicode对应信息的对象
        for j in range(len(base_fonts)):
            baseGlyph = baseFonts['glyf'][base_fonts[j]]
            if onlineGlyph1 == baseGlyph:
                tagName_list["&#x" + uni_list_tag[i][3:].lower() + ';'] = base_nums[j]
    # 解析address
    for i in range(len(uni_list_address1)):
        onlineGlyph2 = addressFonts1['glyf'][uni_list_address1[i]]  # 返回的是unicode对应信息的对象
        for j in range(len(base_fonts)):
            baseGlyph = baseFonts['glyf'][base_fonts[j]]
            if onlineGlyph2 == baseGlyph:
                address_list["&#x" + uni_list_address1[i][3:].lower() + ';'] = base_nums[j]
    # 解析num1
    for i in range(len(uni_list_num)):
        onlineGlyph3 = num2['glyf'][uni_list_num[i]]  # 返回的是unicode对应信息的对象
        for j in range(len(base_fonts)):
            baseGlyph = baseFonts['glyf'][base_fonts[j]]
            if onlineGlyph3 == baseGlyph:
                num1_list["&#x" + uni_list_num[i][3:].lower() + ';'] = base_nums[j]
    # # 解析review
    # for i in range(len(uni_list_review)):
    #     onlineGlyph4 = review['glyf'][uni_list_review[i]]  # 返回的是unicode对应信息的对象
    #     for j in range(len(base_fonts)):
    #         baseGlyph = baseFonts['glyf'][base_fonts[j]]
    #         if onlineGlyph4 == baseGlyph:
    #             review_list["&#x" + uni_list_review[i][3:].lower() + ';'] = base_nums[j]
    # 解析dishname
    for i in range(len(uni_list_dishname)):
        onlineGlyph5 = dishname['glyf'][uni_list_dishname[i]]  # 返回的是unicode对应信息的对象
        for j in range(len(base_fonts)):
            baseGlyph = baseFonts['glyf'][base_fonts[j]]
            if onlineGlyph5 == baseGlyph:
                dishname_list["&#x" + uni_list_dishname[i][3:].lower() + ';'] = base_nums[j]
    print("=========加载字典完成===========")

    return showNum_list, tagName_list, address_list, num1_list, review_list, dishname_list

# 提取字体链接、css文件内容
def get_ttf_url(text):
    svgtextcss = re.search(r'href="([^"]+svgtextcss[^"]+)"', text, re.M)
    woff_url = 'http:' + svgtextcss.group(1)
    svg_html = requests.get(woff_url).text
    return woff_url, svg_html


# 下载shopNum字体文件
def get_shopnum_woff(svg_html):
    # svg_html = requests.get(woff_url).text
    lines = svg_html.split('PingFangSC-Regular-')
    partern = re.compile(r',(url.*shopNum)')
    for line in lines:
        out = partern.findall(line)
        if len(out) > 0:
            woff = re.compile('\((.*?)\)')
            shopNum_url = 'http:' + woff.findall(out[0])[0].replace('"', '')
    with open('./fonts/shopNum.woff', 'wb') as writer:
        writer.write(requests.get(shopNum_url).content)
    return None


# 下载address字体文件
def get_address_woff(svg_html):
    # svg_html = requests.get(woff_url).text
    lines = svg_html.split('PingFangSC-Regular-')
    partern = re.compile(r',(url.*address)')
    for line in lines:
        out = partern.findall(line)
        if len(out) > 0:
            woff = re.compile('\((.*?)\)')
            address_url = 'http:' + woff.findall(out[0])[0].replace('"', '')
            print(address_url)
    with open('./fonts/address.woff', 'wb') as writer:
        writer.write(requests.get(address_url).content)
    return None

# 下载tagName字体文件
def get_tagName_woff(svg_html):
    # svg_html = requests.get(woff_url).text
    lines = svg_html.split('PingFangSC-Regular-')
    partern = re.compile(r',(url.*tagName)')
    for line in lines:
        out = partern.findall(line)
        if len(out) > 0:
            woff = re.compile('\((.*?)\)')
            tagName_url = 'http:' + woff.findall(out[0])[0].replace('"', '')
            print(tagName_url)
    with open('./fonts/tagName.woff', 'wb') as writer:
        writer.write(requests.get(tagName_url).content)
    return None